289577660c55a80baada1ca397c10af980464f9f,src/main/java/com/cronutils/model/time/ExecutionTime.java,ExecutionTime,previousClosestMatch,#DateTime#,233

Before Change


                    nearestValue = days.getPreviousValue(highestDay, 1);
                    if(nearestValue.getShifts()>0){
                        newDate = new DateTime(previousYear, highestMonth, 1, 23, 59, 59, date.getZone())
                                .minusMonths(nearestValue.getShifts()).dayOfMonth().withMaximumValue();
                        return previousClosestMatch(newDate);
                    }else{
                        highestDay = nearestValue.getValue();

After Change


                    nearestValue = days.getPreviousValue(highestDay, 1);
                    if(nearestValue.getShifts()>0){
                        newDate = ZonedDateTime.of(LocalDateTime.of(previousYear, highestMonth, 1, 23, 59, 59), ZoneId.systemDefault())
                                .minusMonths(nearestValue.getShifts()).with(lastDayOfMonth());
                        return previousClosestMatch(newDate);
                    }else{
                        highestDay = nearestValue.getValue();